package com.witmore.neutron.ai.web.controller.vo;

import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * Description: MessageBO
 * Author: 豆子高
 * Date: 2025/4/12 17:45
 */
@Data
public class ApiChatCompletionRequest implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;


    /**
     * 消息列表
     */
    private List<ApiMessagePrompt> messages = new ArrayList<>();

    /**
     * 是否流式返回 默认false
     */
    private Boolean stream = false;

    /**
     * 会话id
     */
    private String sessionId;

    /**
     * 是否需要覆盖系统提示词 true：覆盖；false：不覆盖  默认false
     * 如果需要覆盖系统提示词，请将此参数设置为true，然后需要在messages中添加system角色的提示词
     * 如果不需要覆盖系统提示词，请将此参数设置为false，系统会使用默认的系统提示词
     */
    private Boolean sysPromptOverride = false;


    /**
     * 这是一个开放的附加参数 响应类型 可以通过多种方式实现
     * 响应类型 纯文本 "text"；JSON格式 "json"；
     */
    private String responseType = "text";

    /**
     * 响应类型 格式说明提示词 默认为空
     * 如果responseType为"text"或为空，则此参数为纯文本格式的提示词，可不填 直接使用原始的系统提示词
     * 如果responseType为"json"，则此参数为JSON格式的提示词及各个参数的说明 参数可以随意设定
     * 例如：{
     *          "level":"优",
     *          "content":"这是一个JSON格式的响应内容"
     *      }
     *      其中level为响应内容的等级，content为响应内容
     */
    private String responseFormatPrompt;


    private String agentCode;

    private String source;

}
